iT邦幫忙

DAY 25
3

程式設計心法系列 第 25

程式設計心法:24.練習曲

  • 分享至 

  • xImage
  •  

今天我們來練習犁田(誤)。

今天我們拿狐大的例子,來練習犁田(又誤,咳...),練習如何以物件導向的方式來分析與建構出犁田分析系統...XD

算是給接下的繼承實作,暖暖場。

OK,不囉嗦,就給他雷下去。
以狐大提供的幾個案例來說,有騎士、機車、路、人孔蓋、下雨天、夜晚,而犁田的狀況又分為摔倒()、被撞()...等等,很多的名詞與事件。

首先,我們先把問題的定義犁(誤)釐清楚。我們想分析,什麼情況底下,比較容易發生犁田事件。
我們先將得到的資訊分類一下,實體的東西有:騎士、機車(交通工具)、所走的路線,有的有人孔蓋,有的是坑坑洞洞,還有白天或夜晚或下雨等情況。

依據前一篇所提的步驟,先決定物件的實體。

我們 Define 如下:

Class 騎士
  public 名字
  public 載具
  public 行駛(起,迄)
  public 犁田機率(路況[])
  // Constructor
  new(){
    載具= new 交通工具()
  }

Class 交通工具
  public 類型
  public 犁田度分析(路況[])

Class 馬路
  private 起
  private 迄
  public 路況[]
  private 取得路障資訊()
  new(string from, string to){
    起=from;
    迄=to;
    取得路障資訊(); // 將路況回填到 路況[] 這個 public 屬性中
  }

Class 人孔蓋
  public 狀態

Class 坑洞
  public 深度

Class 天候
  public 天氣型態
  public 天色
  private 取得天候()
  new(){
    取得天候(); // 取得天氣型態與天色
  }

當然上面所呈現的是物件分析的結果,過程中,物件是不斷的在思考中去調整與更改(屬性與方法)的。

所以有了這些物件,我們可以來開始建構我們的分析程式:

function float 犁田分析(string name, string motor, string from, string to) {
  騎士 o騎士;

  o騎士 = new 騎士();
  o騎士.名字 = name;
  o騎士.載具.類型 = motor;

  return o騎士.犁田機率(o騎士.行駛(from,to));
}

我們在 Class 騎士 中有一個 行駛()的 Method,裡面的動作如下:

function 路況[] 行駛(string from, string to){
  馬路 o馬路;
  
  o馬路 = new 馬路(from, to);
  return o馬路.路況;
} 

在取得的路況中,我們有 路況[0]->人孔蓋 及 路況[1]->坑洞,於是我們將路況交給 騎士 的犁田機率()去分析:

function float 犁田機率(路況){
  // 先分析載具的犁田度
  float 雷殘=載具.犁田度分析(路況);
  
  // 再分析天候狀況
  天候 o天候= new 天候();

  if (o天候.天氣型態.equals("下雨天")) 雷殘+=0.5;
  if (o天候.天氣型態.equals("晚上")) 雷殘+=0.2;

  return 雷殘;
} 

載具的犁田度分析(會依據載具的類型與路況,計算出犁田的機率)以及取得天候的程式,我們就不再一一說明了。

所以,我們透過犁田分析這個函式,我們在程式中這樣撰寫,

  System.out(犁田分析("狐大","機車","樹林","新莊"));

就可以得到狐大的犁田機率了,這樣是不是比較有感覺了呢?

本系列文章


上一篇
程式設計心法:23.物件導向設計的步驟
下一篇
程式設計心法:25.實作 Form 的繼承(上)
系列文
程式設計心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2009-10-31 11:18:01


從小教授之後
好久沒看到中文程式碼了

大推 bbb

jamesjan iT邦高手 1 級 ‧ 2009-10-31 14:52:11 檢舉

Access 中可以使用中文的物件命名,不過寫起來真饒手...XD

讓 i 是 1 到 30
做 推 程式設計心法[i]文
迴圈

阿鬼, 你還是說英文好些...Orz

我要留言

立即登入留言